/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package bs.global.auditoria;

import bs.empresa.web.EmpresaBean;
import bs.global.modelo.Auditoria;
import bs.global.util.JsfUtil;
import bs.seguridad.web.UsuarioSession;
import java.util.Date;
import javax.ejb.Stateless;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;

/**
 *
 * @author Claudio
 * Si la clase no implementa la interfaz IAuditableEntity, no actualiza datos
 */

@Stateless
public class AuditoriaListener {
    
    @PrePersist
    public void onPrePersist(Object o) {
        if (o instanceof IAuditableEntity) {

//            System.err.println("onPrePersist");

            IAuditableEntity e = (IAuditableEntity) o;
            if (e.getAuditoria() == null) {
                e.setAuditoria(new Auditoria());
            }


            e.getAuditoria().setFechaAlta(new Date());
            e.getAuditoria().setFechaModificacion(new Date());
            e.getAuditoria().setUltimaOperacion("A");
            e.getAuditoria().setDebaja("N");
            e.getAuditoria().setDiayhora(new Date());

            UsuarioSession us = (UsuarioSession) JsfUtil.getManagedBean("usuarioSession");
            e.getAuditoria().setUsuario(us.getUsuario().getUsuario());

            EmpresaBean eb = (EmpresaBean) JsfUtil.getManagedBean("empresaBean");
            e.getAuditoria().setCodigoEmpresa(eb.getEmpresa().getCodigo());
        }

    }

    @PreUpdate
    public void onPreUpdate(Object o) {

        if (o instanceof IAuditableEntity) {

            IAuditableEntity e = (IAuditableEntity) o;
            if (e.getAuditoria() == null) {
                  e.setAuditoria(new Auditoria());
            }

            e.getAuditoria().setFechaModificacion(new Date());
            e.getAuditoria().setUltimaOperacion("M");
            e.getAuditoria().setDiayhora(new Date());

            UsuarioSession us = (UsuarioSession) JsfUtil.getManagedBean("usuarioSession");
            e.getAuditoria().setUsuario(us.getUsuario().getUsuario());

            EmpresaBean eb = (EmpresaBean) JsfUtil.getManagedBean("empresaBean");
            e.getAuditoria().setCodigoEmpresa(eb.getEmpresa().getCodigo());   
        }     
        
    }

    

    
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")
 
}
